﻿#pragma once

#include <boost/signal.hpp>
#include "../../domain/models/Player.h"
#include "../../domain/models/CardSet.h"
#include "../../domain/models/CardsCollection.h"

namespace Views {

	/**
	* Interfejs widoku oskarżenia
	*/
	class IAccusationView
	{
	public:
		virtual ~IAccusationView() {};

		typedef boost::signal<void (bool)> OnPlayerDecisionSet /** Typ zdarzenia wyboru decyzji w sprawie oskarżenia */;
		typedef boost::signal<void (Cards::CardSet)> OnCardsInAccusationSet /** Typ zdarzenia wyboru kart w oskarżeniu */;

		OnPlayerDecisionSet playerDecisionSetEvent; /**< Zdarzenie wyboru decyzji w sprawie oskarżenia */
		OnCardsInAccusationSet cardsInAccusationSetEvent; /**< Zdarzenie wyboru kart w oskarżeniu */

		/**
		* Pyta gracza, czy chce dokonać dedukcji, czy oskarżenia i wywołuje zdarzenie playerDecisionSetEvent
		*/
		virtual void askIfPlayerWantsToPerformAccusation() = 0;
		/**
		* Pyta gracza, jakie karty chce przedstawić w oskarżeniu i wywołuje zdarzenie cardsInAccusationSetEvent
		*/
		virtual void askForCardsInAccusation(Cards::CardsCollection) = 0;
	};
}

